package com.lanou3g.code0404.morning;

/**
 * Created by dllo on 18/4/4.
 */
//返回值
public class Foo2 {
    /*
    1.add方法作用:  接收2个int 类型的值并求和
    2.int add(intnum2,intnum2){}中 第一个int叫做返回值类型
    用来表示: 这个方法可以返回给调用方一个什么类型的数据
     */
    int add(int num1, int num2) {
        int result = num1 + num2;
        /*
        如果返回值类型这里写的不是 void
        则这个方法 必须有明确的返回值
        即必须写出return关键字
        return关键字后跟着要返回的结果
        */
        return result;
    }

    void fun() {
        System.out.println("这个方法没有返回值");
    }

    /*
    return专门用在方法中,
    这个关键字的作用是: 直接,结束一个方法,
    即在return后的代码,全部都不会执行
    如果一个方法声明了有返回值,那么必须写return返回值;
    如果一个方法声明了没有返回值(void),那么可以省略return;
    并且由于没有返回值,那么即使写了return
    后面也不需要写返回的值
     */
    /*
    打印一个数组
     */
    void printArr(int[] arr) {
        //这个if不写就是契约式编程
        if (arr == null) {
            //防御式编程
            System.out.println("你有没有new  自己心里没点逼数啊");
            //当执行到return的时候,方法会无条件结束
            return;
        }
        System.out.print("[");
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i]);
            if (i != arr.length - 1) {
                System.out.print(",");
            }

        }
        System.out.println("]");
    }
    //但凡我们要改变一个字符串的值
    //就必须有返回值
    String fun3(String s){
        s="Echo:"+s;
        return s;
    }
    Table fun4(Table a ){
        a= new Table();
        a.color="red";
        a.legCount=4;
        return a;
    }
    //可以用...表示不确定个数的参数
    //不是很长用,但是有这样的写法
    //在方法里使用的时候,
    //nums其实就是个int类型的数组
    int addall(int...nums){
        int sum=0;
        for (int i = 0; i < nums.length; i++) {
            sum+=nums[i];
        }
        return sum;
    }
}
